<!DOCTYPE html><html lang="en-US"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><style>.bespoke-marp-note,.bespoke-marp-osc,.bespoke-progress-parent{display:none;transition:none}@media screen{body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear;-webkit-tap-highlight-color:transparent}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:disabled{cursor:not-allowed;opacity:.15!important}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover{opacity:1}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:active{opacity:.6}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:not(:disabled){transition:none}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-prev{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-next{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen]{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen]{background-image:url("")}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter]{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body,html{height:100%;margin:0}body{background:#000;overflow:hidden}svg.bespoke-marp-slide{content-visibility:hidden;z-index:-1;pointer-events:none;opacity:0}svg.bespoke-marp-slide.bespoke-marp-active{content-visibility:visible;z-index:0;pointer-events:auto;opacity:1}svg.bespoke-marp-slide.bespoke-marp-active.bespoke-marp-active-ready *{-webkit-animation-name:__bespoke_marp__!important;animation-name:__bespoke_marp__!important}@supports not (content-visibility:hidden){svg.bespoke-marp-slide[data-bespoke-marp-load=hideable]{display:none}svg.bespoke-marp-slide[data-bespoke-marp-load=hideable].bespoke-marp-active{display:block}}[data-bespoke-marp-fragment=inactive]{visibility:hidden}body[data-bespoke-view=""] .bespoke-marp-parent,body[data-bespoke-view=next] .bespoke-marp-parent{bottom:0;left:0;position:absolute;right:0;top:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc{background:rgba(0,0,0,.65);border-radius:7px;bottom:50px;color:#fff;display:block;font-family:Helvetica,Arial,sans-serif;font-size:16px;left:50%;line-height:0;opacity:1;padding:12px;position:absolute;touch-action:manipulation;transform:translateX(-50%);transition:opacity .2s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:1;will-change:transform}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>*,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>*{margin-left:6px}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>:first-child,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>:first-child{margin-left:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span{opacity:.8}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page]{display:inline-block;min-width:140px;text-align:center}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev]{height:32px;line-height:32px;width:32px}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive{cursor:none}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc{opacity:0;pointer-events:none}body[data-bespoke-view=""] svg.bespoke-marp-slide,body[data-bespoke-view=next] svg.bespoke-marp-slide{height:100%;left:0;position:absolute;top:0;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent{background:#222;display:flex;height:5px;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent+.bespoke-marp-parent{top:5px}body[data-bespoke-view=""] .bespoke-progress-parent .bespoke-progress-bar{flex:0 0 0;background:#0288d1;transition:flex-basis .2s cubic-bezier(0,1,1,1)}body[data-bespoke-view=next]{background:transparent}body[data-bespoke-view=presenter]{background:#161616}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container{font-family:Helvetica,Arial,sans-serif;height:100%;left:0;position:absolute;top:0;width:100%;display:grid;grid-template-columns:2fr 1fr;grid-template-rows:minmax(140px,1fr) 2fr 3em;grid-template-areas:"current next" "current note" "info    note"}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent{grid-area:current;position:relative;overflow:hidden}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide{height:calc(100% - 40px);left:20px;position:absolute;pointer-events:none;top:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide.bespoke-marp-active{filter:drop-shadow(0 3px 10px rgba(0,0,0,.5))}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container{background:#222;cursor:pointer;display:none;grid-area:next;overflow:hidden;position:relative}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container iframe.bespoke-marp-presenter-next{background:transparent;border:0;display:block;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));height:calc(100% - 40px);left:20px;position:absolute;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:20px;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container{background:#222;color:#eee;grid-area:note}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note{margin:20px;width:calc(100% - 40px);height:calc(100% - 40px);box-sizing:border-box;font-size:1.1em;overflow:auto;padding-right:3px;white-space:pre-wrap;word-wrap:break-word;scrollbar-width:thin;scrollbar-color:hsla(0,0%,93.3%,.5) transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar{width:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-track{background:transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-thumb{background:hsla(0,0%,93.3%,.5);border-radius:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note:empty{pointer-events:none}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:first-child{margin-top:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:last-child{margin-bottom:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container{align-items:center;box-sizing:border-box;color:#eee;display:flex;flex-wrap:nowrap;grid-area:info;justify-content:center;padding:0 10px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{display:block;box-sizing:border-box;padding:0 10px;white-space:nowrap;width:100%}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{height:1.5em;line-height:1.5em;width:1.5em}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page{order:2;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page .bespoke-marp-presenter-info-page-text{display:inline-block;min-width:120px;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time{color:#999;order:1;text-align:left}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{color:#999;order:3;text-align:right}}@media print{.bespoke-marp-presenter-info-container,.bespoke-marp-presenter-next-container,.bespoke-marp-presenter-note-container{display:none}}</style><style>@charset "UTF-8";@import url("https://fonts.googleapis.com/css?family=Lato:400,900|Roboto+Mono:400,700&display=swap");div#p>svg>foreignObject>section{width:1280px;height:720px;box-sizing:border-box;overflow:hidden;position:relative;scroll-snap-align:center center}div#p>svg>foreignObject>section:after{bottom:0;content:attr(data-marpit-pagination);padding:inherit;pointer-events:none;position:absolute;right:0}div#p>svg>foreignObject>section:not([data-marpit-pagination]):after{display:none}/* Normalization */div#p>svg>foreignObject>section h1{font-size:2em;margin:0.67em 0}div#p>svg>foreignObject>section video::-webkit-media-controls{will-change:transform}@page{size:1280px 720px;margin:0}@media print{body,html{background-color:#fff;margin:0;page-break-inside:avoid;break-inside:avoid-page}div#p>svg>foreignObject>section{page-break-before:always;break-before:page}div#p>svg>foreignObject>section,div#p>svg>foreignObject>section *{-webkit-print-color-adjust:exact!important;animation-delay:0s!important;animation-duration:0s!important;color-adjust:exact!important;transition:none!important}div#p>svg[data-marpit-svg]{display:block;height:100vh;width:100vw}}@font-face{font-family:KaTeX_AMS;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_AMS-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_AMS-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_AMS-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Script-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Script-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Script-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size1-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size1-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size1-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size2-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size2-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size2-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size3-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size3-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size3-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size4-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size4-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size4-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Typewriter-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Typewriter-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Typewriter-Regular.ttf') format("truetype");font-weight:400;font-style:normal}div#p>svg>foreignObject>section .katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto;border-color:currentColor}div#p>svg>foreignObject>section .katex *{-ms-high-contrast-adjust:none!important}div#p>svg>foreignObject>section .katex .katex-version:after{content:"0.12.0"}div#p>svg>foreignObject>section .katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}div#p>svg>foreignObject>section .katex .katex-html>.newline{display:block}div#p>svg>foreignObject>section .katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}div#p>svg>foreignObject>section .katex .base,div#p>svg>foreignObject>section .katex .strut{display:inline-block}div#p>svg>foreignObject>section .katex .textbf{font-weight:700}div#p>svg>foreignObject>section .katex .textit{font-style:italic}div#p>svg>foreignObject>section .katex .textrm{font-family:KaTeX_Main}div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .texttt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathnormal{font-family:KaTeX_Math;font-style:italic}div#p>svg>foreignObject>section .katex .mathit{font-family:KaTeX_Main;font-style:italic}div#p>svg>foreignObject>section .katex .mathrm{font-style:normal}div#p>svg>foreignObject>section .katex .mathbf{font-family:KaTeX_Main;font-weight:700}div#p>svg>foreignObject>section .katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}div#p>svg>foreignObject>section .katex .amsrm,div#p>svg>foreignObject>section .katex .mathbb,div#p>svg>foreignObject>section .katex .textbb{font-family:KaTeX_AMS}div#p>svg>foreignObject>section .katex .mathcal{font-family:KaTeX_Caligraphic}div#p>svg>foreignObject>section .katex .mathfrak,div#p>svg>foreignObject>section .katex .textfrak{font-family:KaTeX_Fraktur}div#p>svg>foreignObject>section .katex .mathtt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathscr,div#p>svg>foreignObject>section .katex .textscr{font-family:KaTeX_Script}div#p>svg>foreignObject>section .katex .mathsf,div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .mathboldsf,div#p>svg>foreignObject>section .katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}div#p>svg>foreignObject>section .katex .mathitsf,div#p>svg>foreignObject>section .katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}div#p>svg>foreignObject>section .katex .mainrm{font-family:KaTeX_Main;font-style:normal}div#p>svg>foreignObject>section .katex .vlist-t{display:inline-table;table-layout:fixed;border-collapse:collapse}div#p>svg>foreignObject>section .katex .vlist-r{display:table-row}div#p>svg>foreignObject>section .katex .vlist{display:table-cell;vertical-align:bottom;position:relative}div#p>svg>foreignObject>section .katex .vlist>span{display:block;height:0;position:relative}div#p>svg>foreignObject>section .katex .vlist>span>span{display:inline-block}div#p>svg>foreignObject>section .katex .vlist>span>.pstrut{overflow:hidden;width:0}div#p>svg>foreignObject>section .katex .vlist-t2{margin-right:-2px}div#p>svg>foreignObject>section .katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.vlist-s{--marpit-root-font-size:1px}div#p>svg>foreignObject>section .katex .vbox{flex-direction:column;align-items:baseline}div#p>svg>foreignObject>section .katex .hbox,div#p>svg>foreignObject>section .katex .vbox{display:inline-flex}div#p>svg>foreignObject>section .katex .hbox{flex-direction:row;width:100%}div#p>svg>foreignObject>section .katex .thinbox{display:inline-flex;flex-direction:row;width:0;max-width:0}div#p>svg>foreignObject>section .katex .msupsub{text-align:left}div#p>svg>foreignObject>section .katex .mfrac>span>span{text-align:center}div#p>svg>foreignObject>section .katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}div#p>svg>foreignObject>section .katex .hdashline,div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .mfrac .frac-line,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .rule,div#p>svg>foreignObject>section .katex .underline .underline-line{min-height:1px}div#p>svg>foreignObject>section .katex .mspace{display:inline-block}div#p>svg>foreignObject>section .katex .clap,div#p>svg>foreignObject>section .katex .llap,div#p>svg>foreignObject>section .katex .rlap{width:0;position:relative}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .llap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{position:absolute}div#p>svg>foreignObject>section .katex .clap>.fix,div#p>svg>foreignObject>section .katex .llap>.fix,div#p>svg>foreignObject>section .katex .rlap>.fix{display:inline-block}div#p>svg>foreignObject>section .katex .llap>.inner{right:0}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{left:0}div#p>svg>foreignObject>section .katex .clap>.inner>span{margin-left:-50%;margin-right:50%}div#p>svg>foreignObject>section .katex .rule{display:inline-block;border:0 solid;position:relative}div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}div#p>svg>foreignObject>section .katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}div#p>svg>foreignObject>section .katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size1{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size1{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size2{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size2{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size3{font-size:1.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size3{--marpit-root-font-size:1.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size4{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size4{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size5{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size5{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size6{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size6{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size7{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size7{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size8{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size8{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size9{font-size:3.456em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size9{--marpit-root-font-size:3.456em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size10{font-size:4.148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size10{--marpit-root-font-size:4.148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size11{font-size:4.976em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size11{--marpit-root-font-size:4.976em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size1{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size1{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size2{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size2{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size3{font-size:1.16666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size3{--marpit-root-font-size:1.16666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size4{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size4{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size5{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size5{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size6{font-size:1.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size6{--marpit-root-font-size:1.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size7{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size7{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size8{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size8{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size9{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size9{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size10{font-size:3.45666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size10{--marpit-root-font-size:3.45666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size11{font-size:4.14666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size11{--marpit-root-font-size:4.14666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size1{font-size:.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size1{--marpit-root-font-size:.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size2{font-size:.85714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size2{--marpit-root-font-size:.85714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size3{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size3{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size4{font-size:1.14285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size4{--marpit-root-font-size:1.14285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size5{font-size:1.28571429em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size5{--marpit-root-font-size:1.28571429em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size6{font-size:1.42857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size6{--marpit-root-font-size:1.42857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size7{font-size:1.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size7{--marpit-root-font-size:1.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size8{font-size:2.05714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size8{--marpit-root-font-size:2.05714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size9{font-size:2.46857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size9{--marpit-root-font-size:2.46857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size10{font-size:2.96285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size10{--marpit-root-font-size:2.96285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size11{font-size:3.55428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size11{--marpit-root-font-size:3.55428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size1{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size1{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size2{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size2{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size3{font-size:.875em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size3{--marpit-root-font-size:.875em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size4{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size4{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size5{font-size:1.125em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size5{--marpit-root-font-size:1.125em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size6{font-size:1.25em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size6{--marpit-root-font-size:1.25em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size7{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size7{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size8{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size8{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size9{font-size:2.16em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size9{--marpit-root-font-size:2.16em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size10{font-size:2.5925em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size10{--marpit-root-font-size:2.5925em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size11{font-size:3.11em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size11{--marpit-root-font-size:3.11em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size1{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size1{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size2{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size2{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size3{font-size:.77777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size3{--marpit-root-font-size:.77777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size4{font-size:.88888889em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size4{--marpit-root-font-size:.88888889em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size5{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size5{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size6{font-size:1.11111111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size6{--marpit-root-font-size:1.11111111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size7{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size7{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size8{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size8{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size9{font-size:1.92em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size9{--marpit-root-font-size:1.92em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size10{font-size:2.30444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size10{--marpit-root-font-size:2.30444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size11{font-size:2.76444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size11{--marpit-root-font-size:2.76444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size1{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size1{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size2{font-size:.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size2{--marpit-root-font-size:.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size3{font-size:.7em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size3{--marpit-root-font-size:.7em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size4{font-size:.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size4{--marpit-root-font-size:.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size5{font-size:.9em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size5{--marpit-root-font-size:.9em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size6{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size6{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size7{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size7{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size8{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size8{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size9{font-size:1.728em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size9{--marpit-root-font-size:1.728em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size10{font-size:2.074em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size10{--marpit-root-font-size:2.074em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size11{font-size:2.488em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size11{--marpit-root-font-size:2.488em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size1{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size1{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size2{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size2{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size3{font-size:.58333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size3{--marpit-root-font-size:.58333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size4{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size4{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size5{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size5{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size6{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size6{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size7{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size7{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size8{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size8{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size9{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size9{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size10{font-size:1.72833333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size10{--marpit-root-font-size:1.72833333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size11{font-size:2.07333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size11{--marpit-root-font-size:2.07333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size1{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size1{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size2{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size2{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size3{font-size:.48611111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size3{--marpit-root-font-size:.48611111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size4{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size4{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size5{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size5{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size6{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size6{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size7{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size7{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size8{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size8{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size9{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size9{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size10{font-size:1.44027778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size10{--marpit-root-font-size:1.44027778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size11{font-size:1.72777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size11{--marpit-root-font-size:1.72777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size1{font-size:.28935185em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size1{--marpit-root-font-size:.28935185em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size2{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size2{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size3{font-size:.40509259em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size3{--marpit-root-font-size:.40509259em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size4{font-size:.46296296em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size4{--marpit-root-font-size:.46296296em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size5{font-size:.52083333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size5{--marpit-root-font-size:.52083333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size6{font-size:.5787037em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size6{--marpit-root-font-size:.5787037em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size7{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size7{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size8{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size8{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size9{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size9{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size10{font-size:1.20023148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size10{--marpit-root-font-size:1.20023148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size11{font-size:1.43981481em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size11{--marpit-root-font-size:1.43981481em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size1{font-size:.24108004em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size1{--marpit-root-font-size:.24108004em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size2{font-size:.28929605em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size2{--marpit-root-font-size:.28929605em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size3{font-size:.33751205em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size3{--marpit-root-font-size:.33751205em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size4{font-size:.38572806em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size4{--marpit-root-font-size:.38572806em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size5{font-size:.43394407em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size5{--marpit-root-font-size:.43394407em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size6{font-size:.48216008em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size6{--marpit-root-font-size:.48216008em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size7{font-size:.57859209em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size7{--marpit-root-font-size:.57859209em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size8{font-size:.69431051em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size8{--marpit-root-font-size:.69431051em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size9{font-size:.83317261em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size9{--marpit-root-font-size:.83317261em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size10{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size10{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size11{font-size:1.19961427em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size11{--marpit-root-font-size:1.19961427em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size1{font-size:.20096463em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size1{--marpit-root-font-size:.20096463em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size2{font-size:.24115756em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size2{--marpit-root-font-size:.24115756em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size3{font-size:.28135048em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size3{--marpit-root-font-size:.28135048em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size4{font-size:.32154341em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size4{--marpit-root-font-size:.32154341em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size5{font-size:.36173633em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size5{--marpit-root-font-size:.36173633em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size6{font-size:.40192926em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size6{--marpit-root-font-size:.40192926em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size7{font-size:.48231511em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size7{--marpit-root-font-size:.48231511em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size8{font-size:.57877814em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size8{--marpit-root-font-size:.57877814em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size9{font-size:.69453376em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size9{--marpit-root-font-size:.69453376em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size10{font-size:.83360129em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size10{--marpit-root-font-size:.83360129em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size11{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size11{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .delimsizing.size1{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.size2{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .delimsizing.size3{font-family:KaTeX_Size3}div#p>svg>foreignObject>section .katex .delimsizing.size4{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .nulldelimiter{display:inline-block;width:.12em}div#p>svg>foreignObject>section .katex .delimcenter,div#p>svg>foreignObject>section .katex .op-symbol{position:relative}div#p>svg>foreignObject>section .katex .op-symbol.small-op{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .op-symbol.large-op{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .accent>.vlist-t,div#p>svg>foreignObject>section .katex .op-limits>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .accent .accent-body{position:relative}div#p>svg>foreignObject>section .katex .accent .accent-body:not(.accent-full){width:0}div#p>svg>foreignObject>section .katex .overlay{display:block}div#p>svg>foreignObject>section .katex .mtable .vertical-separator{display:inline-block;min-width:1px}div#p>svg>foreignObject>section .katex .mtable .arraycolsep{display:inline-block}div#p>svg>foreignObject>section .katex .mtable .col-align-c>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .mtable .col-align-l>.vlist-t{text-align:left}div#p>svg>foreignObject>section .katex .mtable .col-align-r>.vlist-t{text-align:right}div#p>svg>foreignObject>section .katex .svg-align{text-align:left}div#p>svg>foreignObject>section .katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}div#p>svg>foreignObject>section .katex svg path{stroke:none}div#p>svg>foreignObject>section .katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}div#p>svg>foreignObject>section .katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}div#p>svg>foreignObject>section .katex .stretchy:after,div#p>svg>foreignObject>section .katex .stretchy:before{content:""}div#p>svg>foreignObject>section .katex .hide-tail{width:100%;position:relative;overflow:hidden}div#p>svg>foreignObject>section .katex .halfarrow-left{left:0}div#p>svg>foreignObject>section .katex .halfarrow-left,div#p>svg>foreignObject>section .katex .halfarrow-right{position:absolute;width:50.2%;overflow:hidden}div#p>svg>foreignObject>section .katex .halfarrow-right{right:0}div#p>svg>foreignObject>section .katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}div#p>svg>foreignObject>section .katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}div#p>svg>foreignObject>section .katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}div#p>svg>foreignObject>section .katex .x-arrow-pad{padding:0 .5em}div#p>svg>foreignObject>section .katex .mover,div#p>svg>foreignObject>section .katex .munder,div#p>svg>foreignObject>section .katex .x-arrow{text-align:center}div#p>svg>foreignObject>section .katex .boxpad{padding:0 .3em}div#p>svg>foreignObject>section .katex .fbox,div#p>svg>foreignObject>section .katex .fcolorbox{box-sizing:border-box;border:.04em solid}div#p>svg>foreignObject>section .katex .cancel-pad{padding:0 .2em}div#p>svg>foreignObject>section .katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}div#p>svg>foreignObject>section .katex .sout{border-bottom-style:solid;border-bottom-width:.08em}div#p>svg>foreignObject>section .katex-display{display:block;margin:1em 0;text-align:center}div#p>svg>foreignObject>section .katex-display>.katex{display:block;text-align:center;white-space:nowrap}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html{display:block;position:relative}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html>.tag{position:absolute;right:0}div#p>svg>foreignObject>section .katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}div#p>svg>foreignObject>section .katex-display.fleqn>.katex{text-align:left;padding-left:2em}div#p>svg>foreignObject>section .katex-display{margin:0}div#p>svg>foreignObject>section svg[data-marp-fitting-math]{--preserve-aspect-ratio:xMidYMid meet}div#p>svg>foreignObject>section svg[data-marp-fitting-math] [data-marp-fitting-svg-content]{margin:0 auto}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{display:block;height:auto;width:100%}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{position:static}}div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{content:""}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{position:relative}}div#p>svg>foreignObject>section [data-marp-fitting-svg-content]{display:table;white-space:nowrap}div#p>svg>foreignObject>section [data-marp-fitting-svg-content-wrap]{white-space:pre}div#p>svg>foreignObject>section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em}
/*!
 * Marp / Marpit Gaia theme.
 *
 * @theme gaia
 * @author Yuki Hattori
 *
 * @auto-scaling true
 * @size 4:3 960px 720px
 */div#p>svg>foreignObject>section .hljs{display:block;overflow-x:auto;padding:.5em;background:#000;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-comment,div#p>svg>foreignObject>section .hljs-quote{color:#aeaeae;font-style:italic}div#p>svg>foreignObject>section .hljs-keyword,div#p>svg>foreignObject>section .hljs-selector-tag,div#p>svg>foreignObject>section .hljs-type{color:#e28964}div#p>svg>foreignObject>section .hljs-string{color:#65b042}div#p>svg>foreignObject>section .hljs-subst{color:#daefa3}div#p>svg>foreignObject>section .hljs-link,div#p>svg>foreignObject>section .hljs-regexp{color:#e9c062}div#p>svg>foreignObject>section .hljs-name,div#p>svg>foreignObject>section .hljs-section,div#p>svg>foreignObject>section .hljs-tag,div#p>svg>foreignObject>section .hljs-title{color:#89bdff}div#p>svg>foreignObject>section .hljs-class .hljs-title,div#p>svg>foreignObject>section .hljs-doctag{text-decoration:underline}div#p>svg>foreignObject>section .hljs-bullet,div#p>svg>foreignObject>section .hljs-number,div#p>svg>foreignObject>section .hljs-symbol{color:#3387cc}div#p>svg>foreignObject>section .hljs-params,div#p>svg>foreignObject>section .hljs-template-variable,div#p>svg>foreignObject>section .hljs-variable{color:#3e87e3}div#p>svg>foreignObject>section .hljs-attribute{color:#cda869}div#p>svg>foreignObject>section .hljs-meta{color:#8996a8}div#p>svg>foreignObject>section .hljs-formula{background-color:#0e2231;color:#f8f8f8;font-style:italic}div#p>svg>foreignObject>section .hljs-addition{background-color:#253b22;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-deletion{background-color:#420e09;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-selector-class{color:#9b703f}div#p>svg>foreignObject>section .hljs-selector-id{color:#8b98ab}div#p>svg>foreignObject>section .hljs-emphasis{font-style:italic}div#p>svg>foreignObject>section .hljs-strong{font-weight:700}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{max-height:580px}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2,div#p>svg>foreignObject>section h3,div#p>svg>foreignObject>section h4,div#p>svg>foreignObject>section h5,div#p>svg>foreignObject>section h6{margin:.5em 0 0}div#p>svg>foreignObject>section h1 strong,div#p>svg>foreignObject>section h2 strong,div#p>svg>foreignObject>section h3 strong,div#p>svg>foreignObject>section h4 strong,div#p>svg>foreignObject>section h5 strong,div#p>svg>foreignObject>section h6 strong{font-weight:inherit}div#p>svg>foreignObject>section h1{font-size:1.8em}div#p>svg>foreignObject>section h2{font-size:1.5em}div#p>svg>foreignObject>section h3{font-size:1.3em}div#p>svg>foreignObject>section h4{font-size:1.1em}div#p>svg>foreignObject>section h5{font-size:1em}div#p>svg>foreignObject>section h6{font-size:.9em}div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section p{margin:1em 0 0}div#p>svg>foreignObject>section ol>li,div#p>svg>foreignObject>section ul>li{margin:.3em 0 0}div#p>svg>foreignObject>section ol>li>p,div#p>svg>foreignObject>section ul>li>p{margin:.6em 0 0}div#p>svg>foreignObject>section code{display:inline-block;font-family:Roboto Mono,monospace;font-size:.8em;letter-spacing:0;margin:-.1em .15em;padding:.1em .2em;vertical-align:baseline}div#p>svg>foreignObject>section pre{display:block;margin:1em 0 0;min-height:1em;overflow:visible}div#p>svg>foreignObject>section pre code{box-sizing:border-box;margin:0;min-width:100%;padding:.5em;font-size:.7em}div#p>svg>foreignObject>section pre code svg[data-marp-fitting=svg]{max-height:calc(580px - 1em)}div#p>svg>foreignObject>section blockquote{margin:1em 0 0;padding:0 1em;position:relative}div#p>svg>foreignObject>section blockquote:after,div#p>svg>foreignObject>section blockquote:before{content:"“";display:block;font-family:Times New Roman,serif;font-weight:700;position:absolute}div#p>svg>foreignObject>section blockquote:before{top:0;left:0}div#p>svg>foreignObject>section blockquote:after{right:0;bottom:0;transform:rotate(180deg)}div#p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#p>svg>foreignObject>section mark{background:transparent}div#p>svg>foreignObject>section table{border-spacing:0;border-collapse:collapse;margin:1em 0 0}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{padding:.2em .4em;border-width:1px;border-style:solid}div#p>svg>foreignObject>section{background-image:linear-gradient(135deg,hsla(0,0%,53.3%,0),hsla(0,0%,53.3%,.02) 50%,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.05));font-size:35px;font-family:Lato,Avenir Next,Avenir,Trebuchet MS,Segoe UI,sans-serif;height:720px;line-height:1.35;letter-spacing:1.25px;padding:70px;width:1280px;word-wrap:break-word;color:#455a64;background-color:#fff8e1}div#p>svg>foreignObject>section{--marpit-root-font-size:35px}div#p>svg>foreignObject>section>:first-child,div#p>svg>foreignObject>section>header:first-child+*{margin-top:0}div#p>svg>foreignObject>section a,div#p>svg>foreignObject>section mark{color:#0288d1}div#p>svg>foreignObject>section code{background:#6a7a7d;color:#fff8e1}div#p>svg>foreignObject>section h1 strong,div#p>svg>foreignObject>section h2 strong,div#p>svg>foreignObject>section h3 strong,div#p>svg>foreignObject>section h4 strong,div#p>svg>foreignObject>section h5 strong,div#p>svg>foreignObject>section h6 strong{color:#0288d1}div#p>svg>foreignObject>section pre>code{background:#455a64}div#p>svg>foreignObject>section blockquote:after,div#p>svg>foreignObject>section blockquote:before,div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header,div#p>svg>foreignObject>section section:after{color:#6a7a7d}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{border-color:#455a64}div#p>svg>foreignObject>section table thead th{background:#455a64;color:#fff8e1}div#p>svg>foreignObject>section table tbody>tr:nth-child(odd) td,div#p>svg>foreignObject>section table tbody>tr:nth-child(odd) th{background:rgba(69,90,100,.1)}div#p>svg>foreignObject>section.invert{color:#fff8e1;background-color:#455a64}div#p>svg>foreignObject>section.invert a,div#p>svg>foreignObject>section.invert mark{color:#81d4fa}div#p>svg>foreignObject>section.invert code{background:#dad8c8;color:#455a64}div#p>svg>foreignObject>section.invert h1 strong,div#p>svg>foreignObject>section.invert h2 strong,div#p>svg>foreignObject>section.invert h3 strong,div#p>svg>foreignObject>section.invert h4 strong,div#p>svg>foreignObject>section.invert h5 strong,div#p>svg>foreignObject>section.invert h6 strong{color:#81d4fa}div#p>svg>foreignObject>section.invert pre>code{background:#fff8e1}div#p>svg>foreignObject>section.invert blockquote:after,div#p>svg>foreignObject>section.invert blockquote:before,div#p>svg>foreignObject>section.invert footer,div#p>svg>foreignObject>section.invert header,div#p>svg>foreignObject>section.invert section:after{color:#dad8c8}div#p>svg>foreignObject>section.invert table td,div#p>svg>foreignObject>section.invert table th{border-color:#fff8e1}div#p>svg>foreignObject>section.invert table thead th{background:#fff8e1;color:#455a64}div#p>svg>foreignObject>section.invert table tbody>tr:nth-child(odd) td,div#p>svg>foreignObject>section.invert table tbody>tr:nth-child(odd) th{background:rgba(255,248,225,.1)}div#p>svg>foreignObject>section.gaia{color:#fff8e1;background-color:#0288d1}div#p>svg>foreignObject>section.gaia a,div#p>svg>foreignObject>section.gaia mark{color:#81d4fa}div#p>svg>foreignObject>section.gaia code{background:#cce2de;color:#0288d1}div#p>svg>foreignObject>section.gaia h1 strong,div#p>svg>foreignObject>section.gaia h2 strong,div#p>svg>foreignObject>section.gaia h3 strong,div#p>svg>foreignObject>section.gaia h4 strong,div#p>svg>foreignObject>section.gaia h5 strong,div#p>svg>foreignObject>section.gaia h6 strong{color:#81d4fa}div#p>svg>foreignObject>section.gaia pre>code{background:#fff8e1}div#p>svg>foreignObject>section.gaia blockquote:after,div#p>svg>foreignObject>section.gaia blockquote:before,div#p>svg>foreignObject>section.gaia footer,div#p>svg>foreignObject>section.gaia header,div#p>svg>foreignObject>section.gaia section:after{color:#cce2de}div#p>svg>foreignObject>section.gaia table td,div#p>svg>foreignObject>section.gaia table th{border-color:#fff8e1}div#p>svg>foreignObject>section.gaia table thead th{background:#fff8e1;color:#0288d1}div#p>svg>foreignObject>section.gaia table tbody>tr:nth-child(odd) td,div#p>svg>foreignObject>section.gaia table tbody>tr:nth-child(odd) th{background:rgba(255,248,225,.1)}div#p>svg>foreignObject>section.lead{display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:center}div#p>svg>foreignObject>section.lead h1,div#p>svg>foreignObject>section.lead h2,div#p>svg>foreignObject>section.lead h3,div#p>svg>foreignObject>section.lead h4,div#p>svg>foreignObject>section.lead h5,div#p>svg>foreignObject>section.lead h6{text-align:center}div#p>svg>foreignObject>section.lead h1 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h2 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h3 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h4 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h5 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h6 svg[data-marp-fitting=svg]{--preserve-aspect-ratio:xMidYMid meet}div#p>svg>foreignObject>section.lead p{text-align:center}div#p>svg>foreignObject>section.lead blockquote>h1,div#p>svg>foreignObject>section.lead blockquote>h2,div#p>svg>foreignObject>section.lead blockquote>h3,div#p>svg>foreignObject>section.lead blockquote>h4,div#p>svg>foreignObject>section.lead blockquote>h5,div#p>svg>foreignObject>section.lead blockquote>h6,div#p>svg>foreignObject>section.lead blockquote>p{text-align:left}div#p>svg>foreignObject>section.lead blockquote svg[data-marp-fitting=svg]:not([data-marp-fitting-math]){--preserve-aspect-ratio:xMinYMin meet}div#p>svg>foreignObject>section.lead ol>li>p,div#p>svg>foreignObject>section.lead ul>li>p{text-align:left}div#p>svg>foreignObject>section.lead table{margin-left:auto;margin-right:auto}div#p>svg>foreignObject>section:after,div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{box-sizing:border-box;font-size:66%;height:70px;line-height:50px;overflow:hidden;padding:10px 25px;position:absolute}div#p>svg>foreignObject>section:after{--marpit-root-font-size:66%}div#p>svg>foreignObject>section header{top:0}div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{left:0;right:0}div#p>svg>foreignObject>section footer{bottom:0}div#p>svg>foreignObject>section:after{right:0;bottom:0;font-size:80%}div#p>svg>foreignObject>section:after{--marpit-root-font-size:80%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button><button data-bespoke-marp-osc="presenter" tabindex="-1" title="Open presenter view (p)">Open presenter view</button></div><div id="p"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="1" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="1" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h1>黑盒测试Black Box Testing</h1>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="2" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h2>Outlines</h2>
<ol>
<li>黑盒测试的定义、目标、优劣势、典型的黑盒测试方法</li>
<li><img class="emoji" draggable="false" alt="🌟" src="https://twemoji.maxcdn.com/2/svg/1f31f.svg" data-marp-twemoji=""/> <code>ECP</code>等价类划分法</li>
<li><img class="emoji" draggable="false" alt="🌟" src="https://twemoji.maxcdn.com/2/svg/1f31f.svg" data-marp-twemoji=""/> <code>BVA</code>边界值分析法</li>
<li><code>CEGA</code>因果图法</li>
<li><code>FDA</code>功能图法</li>
<li>黑盒测试方法的选择</li>
<li>黑盒测试工具</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="3" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>黑盒测试概述Black Box Testing Overview</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="4" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>What is Black Box Testing</h3>
<ol>
<li><strong><em>&quot;C-SWEBOK 2018&quot;</em></strong>：如果测试用例的生成仅仅依赖于软件的输入/输出，则将此类测试技术归类为黑盒测试</li>
<li>黑盒测试也称为：<code>功能测试</code>、<code>数据驱动测试</code>或<code>基于规格说明的测试</code></li>
<li>黑盒测试适合软件测试的各个阶段</li>
</ol>
<p><img src="./assets_image/black-box-testing.jpg" alt="height:300" style="height:300px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="5" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>What is Black Box Testing(contd.)</h3>
<ul>
<li>测试者不了解程序的内部情况，不需具备应用程序的代码、内部结构和编程语言的专门知识。只知道程序的输入、输出和系统的功能</li>
<li>从用户的角度针对软件界面、功能及外部结构进行测试，而不考虑程序内部逻辑结构</li>
<li>测试案例是依应用系统应该做的功能，照规范、规格或要求等设计</li>
<li>测试者选择有效输入和无效输入来验证是否正确的输出</li>
</ul>
<blockquote>
<ol>
<li><a href="https://zh.wikipedia.org/wiki/%E9%BB%91%E7%9B%92%E6%B5%8B%E8%AF%95">https://zh.wikipedia.org/wiki/黑盒测试</a></li>
</ol>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="6" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>黑盒测试的目标The Purposes of Black Box Testing</h3>
<ol>
<li>功能缺陷</li>
<li>非功能缺陷</li>
<li>界面缺陷</li>
<li>外部数据源访问缺陷</li>
<li>初始化或终止缺陷</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="7" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>黑盒测试的优劣势</h3>
<ol>
<li>优势
<ol>
<li>简单有效</li>
<li>整体测试： 可以整体测试系统的行为</li>
<li>并行测试： 开发与测试可以并行</li>
<li>要求较低： 对<code>tester</code>的技术要求相对较低</li>
</ol>
</li>
<li>劣势
<ol>
<li>覆盖率低： 难以覆盖所有代码</li>
<li>门槛较低： <code>tester</code>的入门门槛较低</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="8" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>测试方法的评价标准</h3>
<ol>
<li>在最短时间内（快），以最少的人力（省），发现最多的（多）、最严重的缺陷（好）
<ol>
<li>精准测试： 针对性强</li>
<li>完备测试： 覆盖全面</li>
<li>冗余度小： 减少不必要的冗余</li>
<li>执行简单： 执行测试简单</li>
<li>定位快速： 定位引起测试失败的原因的难度小、速度快</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="9" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>典型黑盒测试方法Main Methods of Black Box Testing</h3>
<ol>
<li>基于输入输出数据
<ol>
<li><img class="emoji" draggable="false" alt="🌟" src="https://twemoji.maxcdn.com/2/svg/1f31f.svg" data-marp-twemoji=""/> <code>ECP(Equivalence Class Partitioning, 等价类划分法)</code></li>
<li><img class="emoji" draggable="false" alt="🌟" src="https://twemoji.maxcdn.com/2/svg/1f31f.svg" data-marp-twemoji=""/> <code>BVA(Boundary Value Analysis, 边界值分析法)</code></li>
</ol>
</li>
<li>基于输入输出关系
<ol>
<li><code>CEG(Cause Effect Graphing, 因果图法)</code></li>
<li><code>DTT(Decision Table Testing, 判定表驱动法)</code></li>
</ol>
</li>
<li>基于状态迁移
<ol>
<li><code>FDA(Function Diagram Analysis, 功能图分析法)</code></li>
</ol>
</li>
<li>基于业务场景/业务流程
<ol>
<li><code>Scenario Testing(场景法)</code></li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="10" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>ECP (Equivalence Class Partitioning, 等价类划分法)</h2>
<blockquote>
<p><a href="https://zhuanlan.zhihu.com/p/112810758">https://zhuanlan.zhihu.com/p/112810758</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="11" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>What is ECP</h3>
<ul>
<li><code>ECP</code>将输入域或输出域划分成若干子集，从每个子集中选取少量具有代表性的数据作为测试用例数据
<ol>
<li><code>ECP</code>是一种典型的、基本的黑盒测试方法</li>
<li><img class="emoji" draggable="false" alt="🌟" src="https://twemoji.maxcdn.com/2/svg/1f31f.svg" data-marp-twemoji=""/> <code>ECP</code>不考虑程序内部结构，设计测试用例的依据是<code>SRS</code></li>
</ol>
</li>
<li><code>ECP</code>适用场景： 有输入或输出</li>
</ul>
<p><img class="emoji" draggable="false" alt="❗" src="https://twemoji.maxcdn.com/2/svg/2757.svg" data-marp-twemoji=""/> 以下将<code>IO域</code>代替<code>输入域或输出域</code></p>
<blockquote>
<p><a href="https://en.wikipedia.org/wiki/Equivalence_partitioning">https://en.wikipedia.org/wiki/Equivalence_partitioning</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="12" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>EC等价类</h3>
<ol>
<li><code>valid partition</code>有效等价类：有效的、符合规定的</li>
<li><code>invalid partition</code>无效等价类：无效的、不符合规定的</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="13" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>How to Decide EC</h3>
<ol>
<li>规定了 <strong>取值范围</strong> 或 <strong>值的个数</strong> ==&gt; 确定1个<code>有效等类</code>和2个<code>无效等价类</code></li>
<li>规定了 <strong>值的集合</strong> 或规定了 <strong>“必须如何”</strong> ==&gt; 确定1个<code>有效等价类</code>和1个<code>无效等价类</code></li>
<li>规定了 <strong>是一个<code>boolean</code></strong> ==&gt; 确定1个<code>有效等价类</code>和1个<code>无效等价类</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="14" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>How to Decide EC (contd.)</h3>
<ol>
<li>规定了 <strong>是一组值（假定n个）</strong> 并且 <strong>要对每个值分别处理</strong> ==&gt; 确定n个<code>有效等价类</code>和1个<code>无效等价类</code></li>
<li>规定了 <strong>必须遵守的规则集</strong> ==&gt; 确定1个<code>有效等价类</code>（符合规则集）和若干个<code>无效等价类</code></li>
</ol>
<p><img class="emoji" draggable="false" alt="❗" src="https://twemoji.maxcdn.com/2/svg/2757.svg" data-marp-twemoji=""/> 如果已划分的<code>ECP</code>中各元素在程序处理中的方式不同的情况下，应再将该等价类进一步划分为更小的等价类 ==&gt; 即，同一<code>ECP</code>的元素产生的预期测试效果应一致</p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="15" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>How to Design ECP Test Case</h3>
<ol>
<li>确定<code>EC</code></li>
<li>建立<code>ECT(Equivalence Class Table)</code>： 为每个<code>EC</code>编号</li>
<li>设计<code>Test Case</code>
<ol>
<li>设计一个新的测试用例，使其 <em><strong>尽可能多地覆盖尚未被覆盖</strong></em> 的 <code>有效等价类</code>，重复这一步，直到所有的有效等价类都被覆盖为止</li>
<li>设计一个新的测试用例，使其 <em><strong>仅覆盖一个尚未被覆盖</strong></em> 的 <code>无效等价类</code>，重复这一步，直到所有的无效等价类都被覆盖为止</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="16" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>Example of ECP -- EMail Register</h3>
<h4>邮箱名要求</h4>
<ol>
<li>6至18个字符</li>
<li>可使用字母、数字、下划线</li>
<li>必须以字母开头</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="17" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>Example of ECP -- EMail Register -- EC</h3>
<table>
<thead>
<tr>
<th><code>valid partition</code></th>
<th><code>NO.</code></th>
<th><code>invalid partition</code></th>
<th><code>NO.</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>6 ~ 18个字符</td>
<td>1</td>
<td>少于6个字符<br />多于18个字符</td>
<td>2<br />3</td>
</tr>
<tr>
<td>字母、数字、下划线</td>
<td>4</td>
<td>特殊字符<br />非打印字符<br />中文字符</td>
<td>5<br />6<br />7</td>
</tr>
<tr>
<td>字母开头</td>
<td>8</td>
<td>数字或下划线开头</td>
<td>9</td>
</tr>
</tbody>
</table>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="18" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>Example of ECP -- EMail Register -- Test Cases</h3>
<table>
<thead>
<tr>
<th><code>NO.</code></th>
<th>input</th>
<th><code>EC</code></th>
<th>except output</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>test_123</td>
<td>1, 4, 8</td>
<td>valid input</td>
</tr>
<tr>
<td>2</td>
<td>test</td>
<td>2, 4, 8</td>
<td>invalid input</td>
</tr>
<tr>
<td>3</td>
<td>test_123456789_123456789</td>
<td>3, 4, 8</td>
<td>invalid input</td>
</tr>
<tr>
<td>4</td>
<td>test&amp;&amp;123</td>
<td>1, 5, 8</td>
<td>invalid input</td>
</tr>
<tr>
<td>5</td>
<td>test 123</td>
<td>1, 6, 8</td>
<td>invalid input</td>
</tr>
<tr>
<td>6</td>
<td>test测试123</td>
<td>1, 7, 8</td>
<td>invalid input</td>
</tr>
<tr>
<td>7</td>
<td>123_test</td>
<td>1, 4, 9</td>
<td>invalid input</td>
</tr>
</tbody>
</table>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="19" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>ECP的优缺点</h3>
<ol>
<li>优点：减少了穷举法带来的无限测试用例，化无限测试为有限测试</li>
<li>缺点：
<ol>
<li>输入之间（或输出之间）的关系较少考虑</li>
<li>假设等价类中所有的测试用例均等价</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="20" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>BVA (Boundary Value Analysis, 边界值分析法)</h2>
<blockquote>
<p><a href="https://zhuanlan.zhihu.com/p/121133074">https://zhuanlan.zhihu.com/p/121133074</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="21" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>What is BVA</h3>
<ol>
<li><code>BVA</code>指在<code>IO域</code>的边界或附近上选择测试用例进行的测试</li>
<li><code>BVA</code>通常作为<code>ECP</code>的补充，其测试用例来自<code>EC</code>的边界</li>
<li>适用场景： 有范围的输入或输出</li>
<li><code>BV</code>指相对于输入或输出<code>EC</code>而言</li>
</ol>
<p><img src="./assets_image/bva.png" alt="height:200" style="height:200px;" /></p>
<blockquote>
<p><a href="https://en.wikipedia.org/wiki/Boundary-value_analysis">https://en.wikipedia.org/wiki/Boundary-value_analysis</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="22" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>Why Uses BVA</h3>
<ol>
<li><code>ECP</code>可能忽略了某些特定类型的测试用例，<code>BVA</code>进行弥补</li>
<li>大量的<code>bug</code>发生在边界，而不是在中间区域</li>
<li><code>BVA</code>大多数是冗余测试，适当的冗余测试有利于发现未知<code>bug</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="23" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>How to Decide BV</h3>
<ol>
<li>边界</li>
<li>次边界： <code>delta</code><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="normal">Δ</mi></mrow><annotation encoding="application/x-tex">\Delta</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord">Δ</span></span></span></span></li>
<li>其他边界
<ul>
<li><code>NULL</code></li>
<li><code>&quot;&quot;</code></li>
<li><code>...</code></li>
</ul>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="24" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>How to Decide BV (example)</h3>
<ol>
<li>如果程序的输入或输出是一个有序序列（例如顺序的文件、线性列表或表格）
<ol>
<li>首元素</li>
<li>尾元素</li>
</ol>
</li>
<li>如果程序中使用了一个内部数据结构
<ol>
<li>该内部数据结构的边界上的值</li>
</ol>
</li>
<li>分析规格说明，找出其他可能的边界条件</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="25" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>How to Design BVA Test Cases</h3>
<ol>
<li>确定<code>BV</code></li>
<li>设计<code>test case</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="26" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>Example -- Tests and Types</h3>
<ol>
<li><a href="https://stitcher.io/blog/tests-and-types">https://stitcher.io/blog/tests-and-types</a></li>
<li><a href="https://sikasjc.github.io/2019/07/07/tests-and-types/">https://sikasjc.github.io/2019/07/07/tests-and-types/</a></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="27" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>CEGA (Cause Effect Graphing Analysis, 因果图法)</h2>
<blockquote>
<p><a href="https://zhuanlan.zhihu.com/p/129342944">https://zhuanlan.zhihu.com/p/129342944</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="28" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="28" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>What is CEGA</h3>
<ol>
<li><code>CEG (Cause Effect Graph, 因果图)</code>是一种描述输入条件的组合以及每种组合对应的输出的图形化工具</li>
<li><code>CEGA</code>
<ol>
<li>基于<code>CEG</code>设计测试用例的测试</li>
<li>根据关系（输入条件的组合、约束关系和输出条件的因果关系等），利用图解法分析输入条件的各种组合情况，制定判定表，从而设计测试用例</li>
</ol>
</li>
<li>适用场景： 多种输入条件组合</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="29" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="29" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>Why Uses CEGA</h3>
<ol>
<li><code>ECP</code>和<code>BVA</code>没有考虑输入间的组合、制约等关系</li>
<li><code>ECP</code>和<code>BVA</code>没有考虑输入与输出的关系</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="30" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="30" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>因果图的符号 -- 原因与结果的因果关系</h3>
<ol>
<li><code>恒等/等价</code>：若原因出现，则结果也出现；若原因不出现，则结果也不出现</li>
<li><code>非(～)</code>：若原因出现，则结果不出现；若原因不出现，则结果出现</li>
<li><code>或(∨)</code>：若几个原因中有一个出现，则结果出现；若几个原因均不出现，则结果不出现</li>
<li><code>与(∧)</code>：若几个原因均出现，则结果才出现；若其中有一个原因不出现，则结果不出现</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="31" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="31" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/basic_symbols_of_CEG.png" alt="height:250" style="height:250px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="32" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="32" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>因果图的符号 -- 约束关系</h3>
<ol>
<li>原因与原因的约束关系
<ol>
<li><code>E(Exclusive, 互斥/异)</code>：多个原因中最多有一个可能出现</li>
<li><code>I(Include, 包含/或)</code>：多个原因中至少有一个出现</li>
<li><code>O(Only, 惟一)</code>：多个原因中有且仅有一个出现</li>
<li><code>R(Required,要求)</code>：<code>a</code>出现则<code>b</code>必出现</li>
</ol>
</li>
<li>原因与结果的约束关系
<ol>
<li><code>M(Masked,强制/屏蔽)</code>：<code>a</code>出现则<code>b</code>必不出现，<code>a</code>不出现则<code>b</code>不确定</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="33" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="33" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/constraint_symbols_of_CEG.png" alt="height:300" style="height:300px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="34" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="34" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>How to Design CEGA Test Cases</h3>
<ol>
<li>分析程序规格说明的描述中，哪些是原因，哪些是结果。原因常常是输入条件或是输入条件的等价类，而结果是输出条件。</li>
<li>分析程序规格说明的描述中语义的内容，并将其表示成连接各个原因与各个结果的“因果图”。</li>
<li>标明约束条件。由于语法或环境的限制，有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况，在因果图上使用若干个标准的符号标明约束条件。</li>
<li>把因果图转换成判定表。</li>
<li>为判定表中每一列表示的情况设计测试用例。</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="35" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="35" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>CEGA案例 -- 案例描述</h3>
<ol>
<li>处理销售单价为1.5元饮料的自动售货机软件</li>
<li>若投入1.5元硬币，按下“可乐”、“雪碧”或“红茶”按钮，相应的饮料被送出</li>
<li>若投入的是2元硬币，在送出饮料的同时退还0.5元硬币</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="36" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="36" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>CEGA案例 -- 状态表</h3>
<table>
<thead>
<tr>
<th>-</th>
<th>-</th>
</tr>
</thead>
<tbody>
<tr>
<td>原因</td>
<td>c1:投入1.5元硬币<br />c2:投入2元硬币<br />c3:按“可乐”按钮<br />c4:按“雪碧”按钮<br />c5:按“红茶”按钮</td>
</tr>
<tr>
<td>中间</td>
<td>11：已投币<br />12：已按钮</td>
</tr>
<tr>
<td>结果</td>
<td>a1:退还5角硬币<br />a2:送出“可乐”饮料<br />a3:送出“雪碧”饮料<br />a4:送出“红茶”饮料</td>
</tr>
</tbody>
</table>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="37" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="37" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/CEG_of_example.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="38" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="38" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/decision_table_of_example.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="39" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="39" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>CEGA案例 -- 测试用例（ECP）</h3>
<table>
<thead>
<tr>
<th>用例编号</th>
<th>测试用例</th>
<th>预期输出</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>投入1.5元，按“可乐”</td>
<td>送出“可乐”饮料</td>
</tr>
<tr>
<td>2</td>
<td>投入1.5元，按“雪碧”</td>
<td>送出“雪碧”饮料</td>
</tr>
<tr>
<td>3</td>
<td>投入1.5元，按“红茶”</td>
<td>送出“红茶”饮料</td>
</tr>
<tr>
<td>4</td>
<td>投入2元，按“可乐”</td>
<td>找0.5元，送出“可乐”</td>
</tr>
<tr>
<td>5</td>
<td>投入2元，按“雪碧”</td>
<td>找0.5元，送出“雪碧”</td>
</tr>
<tr>
<td>6</td>
<td>投入2元，按“红茶”</td>
<td>找0.5元，送出“红茶”</td>
</tr>
</tbody>
</table>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="40" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="40" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>FDA(Function Diagram Analysis, 功能图分析法)</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="41" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="41" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<ol>
<li>程序的功能说明通常由动态说明和静态说明组成
<ul>
<li>动态说明描述了输入数据的次序或转移的次序</li>
<li>静态说明描述了输入条件与输出条件之间的对应关系</li>
</ul>
</li>
<li>复杂的程序，存在大量的组合情况，因此，仅用静态说明组成的规格说明对于测试是不够的，必须用动态说明来补充功能说明</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="42" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="42" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>What is FDA</h3>
<ol>
<li>功能图法： 利用程序的功能图生成测试用例的测试方法</li>
<li>适合场景： 状态迁移（测试路径）与逻辑模型</li>
<li>功能图模型
<ul>
<li><code>STD (状态迁移图)</code>： 输入数据和当前状态决定输出数据和后续状态</li>
<li>逻辑功能图</li>
</ul>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="43" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="43" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>Gray Box Testing</h3>
<ol>
<li>功能图法是混合黑盒和白盒的<code>灰盒</code>测试方法</li>
<li>功能图法中用到的<code>逻辑覆盖</code>和<code>路径测试</code>具有白盒测试方法的特点
<ul>
<li>为区别于白盒测试中测试程序内部结构，功能图法的<code>逻辑覆盖</code>和<code>路径测试</code>是系统级的测试</li>
</ul>
</li>
</ol>
<p><img src="./assets_image/gray-box-testing.jpg" alt="height:300" style="height:300px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="44" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="44" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/FD.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="45" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="45" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>功能图法生成测试用例</h3>
<ol>
<li>生成局部测试用例： 在每个状态中，从因果图生成局部测试用例。局部测试库由原因值（输入数据）组合与对应的结果值（输出数据或状态）构成。</li>
<li>测试路径生成： 利用上面的规则生成从初始状态到最后状态的测试路径。</li>
<li>测试用例合成： 合成测试路径与功能图中每个状态的局部测试用例。结果是视状态到最后状态的一个状态序列，以及每个状态中输入数据与对应输出数据组合。
测试用例的合成算法： 采用条件构造树。</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="46" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="46" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>黑盒测试方法的比较与选择Comparison and Selection of Black Box Testing</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="47" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="47" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<ol>
<li>进行<code>ECP</code>（包括输入和输出的<code>EC</code>），将无限测试变成有限测试</li>
<li>进行<code>BVA</code></li>
<li>可以用错误推测法追加一些测试用例（依靠<code>tester</code>的智慧和经验）</li>
<li>对照程序功能，检查已设计出的测试用例的覆盖程度。如未达到要求的覆盖标准，应补充足够的测试用例</li>
<li>如果<code>SRS</code>中含有输入条件的组合情况，则一开始就可选用<code>CEGA</code></li>
<li>对于参数配置类软件，用正交试验法选择较少的组合达到最佳效果</li>
<li>考虑进行<code>FDA</code></li>
<li>对于业务流清晰的系统，可以利用场景法贯穿整个测试过程，综合使用各种测试方法</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="48" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="48" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>黑盒测试工具介绍Black Box Testing CATT</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="49" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="49" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<ol>
<li><code>HP Mercury WinRunner</code> (migrated to <code>HP Functional Testing</code>)： 企业级应用的功能测试工具</li>
<li><code>HP Mercury LoadRunner</code>： 企业级应用的负载测试工具</li>
<li><code>HP Mercury QuickTest Professional</code>： 企业级应用的自动化测试工具</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="50" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="50" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>自动化测试</h3>
<ol>
<li>通过“录制”和“回放”实现“自动化”
<ol>
<li>录制： 生成脚本</li>
<li>回放： 运行脚本</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="51" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="51" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>HP Mercury WinRunner (Migrated to HP Functional Testing)</h3>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="52" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="52" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/winrunner_01.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="53" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="53" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/winrunner_02.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="54" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="54" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/winrunner_03.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="55" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="55" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/winrunner_04.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="56" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="56" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>HP Mercury LoadRunner</h3>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="57" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="57" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/loadrunner_01.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="58" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="58" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/loadrunner_02.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="59" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="59" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/loadrunner_03.png" alt="height:450" style="height:450px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="60" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="60" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/loadrunner_05.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="61" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="61" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/loadrunner_06.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="62" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="62" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<h3>HP Mercury QuickTest Professional</h3>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="63" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="63" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_01.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="64" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="64" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_02.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="65" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="65" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_03.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="66" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="66" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_04.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="67" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="67" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_05.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="68" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="68" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_06.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="69" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="69" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_07.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="70" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="70" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_08.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="71" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="71" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_09.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="72" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="72" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_10.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="73" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="73" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<p><img src="./assets_image/qtp_11.png" alt="height:600" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="74" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="74" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h2>Futhermore</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="75" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="75" data-marpit-pagination-total="76" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<header><em>Black Box Testing</em></header>
<ol>
<li><a href="https://www.softwaretestinghelp.com/black-box-testing/">Black Box Testing: An In-Depth Tutorial With Examples And Techniques</a></li>
<li><a href="https://www.geeksforgeeks.org/software-engineering-black-box-testing/">Software Engineering | Black box testing</a></li>
<li><a href="https://en.wikipedia.org/wiki/Black-box_testing">Black-box testing</a></li>
<li><a href="https://en.wikipedia.org/wiki/Gray_box_testing">Gray box testing</a></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="76" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-header="_Black Box Testing_" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="76" data-marpit-pagination-total="76" style="--class:lead;--paginate:true;--background-color:FloralWhite;--header:_Black Box Testing_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<header><em>Black Box Testing</em></header>

<h1>Thank You</h1>
<h2><img class="emoji" draggable="false" alt="🆗" src="https://twemoji.maxcdn.com/2/svg/1f197.svg" data-marp-twemoji=""/>End of This Chapter<img class="emoji" draggable="false" alt="🆗" src="https://twemoji.maxcdn.com/2/svg/1f197.svg" data-marp-twemoji=""/></h2>
<footer>@aRoming</footer>
</section>
<script>!function(){"use strict";const t="marpitSVGPolyfill:setZoomFactor,",e=Symbol();let r,o;function n(n){const i="object"==typeof n&&n.target||document,a="object"==typeof n?n.zoom:n;window[e]||(Object.defineProperty(window,e,{configurable:!0,value:!0}),window.addEventListener("message",(({data:e,origin:r})=>{if(r===window.origin)try{if(e&&"string"==typeof e&&e.startsWith(t)){const[,t]=e.split(","),r=Number.parseFloat(t);Number.isNaN(r)||(o=r)}}catch(t){console.error(t)}})));let l=!1;Array.from(i.querySelectorAll("svg[data-marpit-svg]"),(t=>{var e,n,i,s;t.style.transform||(t.style.transform="translateZ(0)");const c=a||o||t.currentScale||1;r!==c&&(r=c,l=c);const d=t.getBoundingClientRect(),{length:u}=t.children;for(let r=0;r<u;r+=1){const o=t.children[r],a=o.getScreenCTM();if(a){const t=null!==(n=null===(e=o.x)||void 0===e?void 0:e.baseVal.value)&&void 0!==n?n:0,r=null!==(s=null===(i=o.y)||void 0===i?void 0:i.baseVal.value)&&void 0!==s?s:0,l=o.firstElementChild,{style:u}=l;u.transformOrigin||(u.transformOrigin=`${-t}px ${-r}px`),u.transform=`scale(${c}) matrix(${a.a}, ${a.b}, ${a.c}, ${a.d}, ${a.e-d.left}, ${a.f-d.top}) translateZ(0.0001px)`}}})),!1!==l&&Array.from(i.querySelectorAll("iframe"),(({contentWindow:e})=>{null==e||e.postMessage(`${t}${l}`,"null"===window.origin?"*":window.origin)}))}r=1,o=void 0;const i=(t,e,r)=>{if(t.getAttribute(e)!==r)return t.setAttribute(e,r),!0};function a({once:t=!1,target:e=document}={}){const r="Apple Computer, Inc."===navigator.vendor?[n]:[];let o=!t;const a=()=>{for(const t of r)t({target:e});!function(t=document){Array.from(t.querySelectorAll('svg[data-marp-fitting="svg"]'),(t=>{var e;const r=t.firstChild,o=r.firstChild,{scrollWidth:n,scrollHeight:a}=o;let l,s=1;if(t.hasAttribute("data-marp-fitting-code")&&(l=null===(e=t.parentElement)||void 0===e?void 0:e.parentElement),t.hasAttribute("data-marp-fitting-math")&&(l=t.parentElement),l){const t=getComputedStyle(l),e=Math.ceil(l.clientWidth-parseFloat(t.paddingLeft||"0")-parseFloat(t.paddingRight||"0"));e&&(s=e)}const c=Math.max(n,s),d=Math.max(a,1),u=`0 0 ${c} ${d}`;i(r,"width",`${c}`),i(r,"height",`${d}`),i(t,"preserveAspectRatio",getComputedStyle(t).getPropertyValue("--preserve-aspect-ratio")||"xMinYMin meet"),i(t,"viewBox",u)&&t.classList.toggle("__reflow__")}))}(e),o&&window.requestAnimationFrame(a)};return a(),()=>{o=!1}}const l=Symbol(),s=document.currentScript;((t=document)=>{if("undefined"==typeof window)throw new Error("Marp Core's browser script is valid only in browser context.");if(t[l])return t[l];const e=a({target:t}),r=()=>{e(),delete t[l]};Object.defineProperty(t,l,{configurable:!0,value:r})})(s?s.getRootNode():document)}();
</script></foreignObject></svg></div><script>/*!! License: https://unpkg.com/@marp-team/marp-cli@0.23.3/lib/bespoke.js.LICENSE.txt */
!function(){"use strict";var e=function(e,t){var n,r=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),i=[].filter.call("string"==typeof e.slides?r.querySelectorAll(e.slides):e.slides||r.children,(function(e){return"SCRIPT"!==e.nodeName})),s={},a=function(e,t){return(t=t||{}).index=i.indexOf(e),t.slide=e,t},o=function(e,t){s[e]=(s[e]||[]).filter((function(e){return e!==t}))},l=function(e,t){return(s[e]||[]).reduce((function(e,n){return e&&!1!==n(t)}),!0)},c=function(e,t){i[e]&&(n&&l("deactivate",a(n,t)),n=i[e],l("activate",a(n,t)))},d=function(e,t){var r=i.indexOf(n)+e;l(e>0?"next":"prev",a(n,t))&&c(r,t)},u={off:o,on:function(e,t){return(s[e]||(s[e]=[])).push(t),o.bind(null,e,t)},fire:l,slide:function(e,t){if(!arguments.length)return i.indexOf(n);l("slide",a(i[e],t))&&c(e,t)},next:d.bind(null,1),prev:d.bind(null,-1),parent:r,slides:i,destroy:function(e){l("destroy",a(n,e)),s={}}};return(t||[]).forEach((function(e){e(u)})),n||c(0),u};function t(e){e.parent.classList.add("bespoke-marp-parent"),e.slides.forEach((e=>e.classList.add("bespoke-marp-slide"))),e.on("activate",(t=>{const n=t.slide,r=!n.classList.contains("bespoke-marp-active");e.slides.forEach((e=>{e.classList.remove("bespoke-marp-active"),e.setAttribute("aria-hidden","true")})),n.classList.add("bespoke-marp-active"),n.removeAttribute("aria-hidden"),r&&(n.classList.add("bespoke-marp-active-ready"),document.body.clientHeight,n.classList.remove("bespoke-marp-active-ready"))}))}function n(e){let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map((e=>[null,...e.querySelectorAll("[data-marpit-fragment]")]))});const r=r=>void 0!==e.fragments[t][n+r],i=(r,i)=>{t=r,n=i,e.fragments.forEach(((e,t)=>{e.forEach(((e,n)=>{if(null==e)return;const s=t<r||t===r&&n<=i;e.setAttribute("data-bespoke-marp-fragment",s?"active":"inactive"),t===r&&n===i?e.setAttribute("data-bespoke-marp-current-fragment","current"):e.removeAttribute("data-bespoke-marp-current-fragment")}))})),e.fragmentIndex=i;const s={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:i};e.fire("fragment",s)};e.on("next",(({fragment:s=!0})=>{if(s){if(r(1))return i(t,n+1),!1;const s=t+1;e.fragments[s]&&i(s,0)}else{const r=e.fragments[t].length;if(n+1<r)return i(t,r-1),!1;const s=e.fragments[t+1];s&&i(t+1,s.length-1)}})),e.on("prev",(({fragment:s=!0})=>{if(r(-1)&&s)return i(t,n-1),!1;const a=t-1;e.fragments[a]&&i(a,e.fragments[a].length-1)})),e.on("slide",(({index:t,fragment:n})=>{let r=0;if(void 0!==n){const i=e.fragments[t];if(i){const{length:e}=i;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}i(t,r)})),i(0,0)}var r,i=(function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,i=n.length,s={};r<i;r++)if((e=n[r])&&e[1]in t){for(r=0;r<e.length;r++)s[n[0][r]]=e[r];return s}return!1}(),i={change:r.fullscreenchange,error:r.fullscreenerror},s={request:function(e,n){return new Promise(function(i,s){var a=function(){this.off("change",a),i()}.bind(this);this.on("change",a);var o=(e=e||t.documentElement)[r.requestFullscreen](n);o instanceof Promise&&o.then(a).catch(s)}.bind(this))},exit:function(){return new Promise(function(e,n){if(this.isFullscreen){var i=function(){this.off("change",i),e()}.bind(this);this.on("change",i);var s=t[r.exitFullscreen]();s instanceof Promise&&s.then(i).catch(n)}else e()}.bind(this))},toggle:function(e,t){return this.isFullscreen?this.exit():this.request(e,t)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var r=i[e];r&&t.addEventListener(r,n,!1)},off:function(e,n){var r=i[e];r&&t.removeEventListener(r,n,!1)},raw:r};r?(Object.defineProperties(s,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),n?e.exports=s:window.screenfull=s):n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()}(r={exports:{}},r.exports),r.exports);function s(e){e.fullscreen=()=>{i.isEnabled&&i.toggle(document.body)},document.addEventListener("keydown",(t=>{70!==t.which&&122!==t.which||t.altKey||t.ctrlKey||t.metaKey||!i.isEnabled||(e.fullscreen(),t.preventDefault())}))}function a(e=2e3){return t=>{let n;function r(){n&&clearTimeout(n),n=setTimeout((()=>{t.parent.classList.add("bespoke-marp-inactive"),t.fire("marp-inactive")}),e),t.parent.classList.contains("bespoke-marp-inactive")&&(t.parent.classList.remove("bespoke-marp-inactive"),t.fire("marp-active"))}document.addEventListener("mousedown",r),document.addEventListener("mousemove",r),document.addEventListener("touchend",r),setTimeout(r,0)}}const o=["AUDIO","BUTTON","INPUT","SELECT","TEXTAREA","VIDEO"];function l(e){e.parent.addEventListener("keydown",(e=>{if(!e.target)return;const t=e.target;(o.includes(t.nodeName)||"true"===t.contentEditable)&&e.stopPropagation()}))}function c(e){window.addEventListener("load",(()=>{for(const t of e.slides){const e=t.querySelector("[data-marp-fitting]")?"":"hideable";t.setAttribute("data-bespoke-marp-load",e)}}))}var d;function u({interval:e=200}={}){return t=>{document.addEventListener("keydown",(e=>{if(32===e.which&&e.shiftKey)t.prev();else if(33===e.which||37===e.which||38===e.which)t.prev({fragment:!e.shiftKey});else if(32!==e.which||e.shiftKey)if(34===e.which||39===e.which||40===e.which)t.next({fragment:!e.shiftKey});else if(35===e.which)t.slide(t.slides.length-1,{fragment:-1});else{if(36!==e.which)return;t.slide(0)}else t.next();e.preventDefault()}));let n,r,i=0;t.parent.addEventListener("wheel",(s=>{let a=!1;const o=(e,t)=>{e&&(a=a||function(e,t){return function(e,t){const n=t===d.X?"Width":"Height";return e[`client${n}`]<e[`scroll${n}`]}(e,t)&&function(e,t){const{overflow:n}=e,r=e[`overflow${t}`];return"auto"===n||"scroll"===n||"auto"===r||"scroll"===r}(getComputedStyle(e),t)}(e,t)),(null==e?void 0:e.parentElement)&&o(e.parentElement,t)};if(0!==s.deltaX&&o(s.target,d.X),0!==s.deltaY&&o(s.target,d.Y),a)return;s.preventDefault(),r&&clearTimeout(r),r=setTimeout((()=>{n=0}),e);const l=Date.now()-i<e,c=Math.sqrt(Math.pow(s.deltaX,2)+Math.pow(s.deltaY,2)),u=c<=n;if(n=c,l||u)return;let f;(s.deltaX>0||s.deltaY>0)&&(f="next"),(s.deltaX<0||s.deltaY<0)&&(f="prev"),f&&(t[f](),i=Date.now())}))}}!function(e){e.X="X",e.Y="Y"}(d||(d={}));const f=(...e)=>history.replaceState(...e),p="data-bespoke-view",m="presenter",h="next",g=["",m,h],v=(e,{protocol:t,host:n,pathname:r,hash:i}=location)=>{const s=e.toString();return`${t}//${n}${r}${s?"?":""}${s}${i}`},b=()=>{const e=document.body.getAttribute(p);if(g.includes(e))return e;throw new Error("View mode is not assigned.")},w=e=>new URLSearchParams(location.search).get(e),y=(e,t={})=>{var n;const r=Object.assign({location:location,setter:f},t),i=new URLSearchParams(r.location.search);for(const t of Object.keys(e)){const n=e[t];"string"==typeof n?i.set(t,n):i.delete(t)}try{r.setter(Object.assign({},null!==(n=window.history.state)&&void 0!==n?n:{}),"",v(i,r.location))}catch(e){console.error(e)}},x={available:(()=>{try{return localStorage.setItem("bespoke-marp","bespoke-marp"),localStorage.removeItem("bespoke-marp"),!0}catch(e){return console.warn("Warning: Using localStorage is restricted in the current host so some features may not work."),!1}})(),get:e=>{try{return localStorage.getItem(e)}catch(e){return null}},set:(e,t)=>{try{return localStorage.setItem(e,t),!0}catch(e){return!1}},remove:e=>{try{return localStorage.removeItem(e),!0}catch(e){return!1}}};function E(e=".bespoke-marp-osc"){const t=document.querySelector(e);if(!t)return()=>{};const n=(e,n)=>{t.querySelectorAll(`[data-bespoke-marp-osc=${JSON.stringify(e)}]`).forEach(n)};return i.isEnabled||n("fullscreen",(e=>e.style.display="none")),x.available||n("presenter",(e=>{e.disabled=!0,e.title="Presenter view is disabled due to restricted localStorage."})),e=>{t.addEventListener("click",(t=>{if(t.target instanceof HTMLElement){const{bespokeMarpOsc:n}=t.target.dataset;switch(n&&t.target.blur(),n){case"next":e.next({fragment:!t.shiftKey});break;case"prev":e.prev({fragment:!t.shiftKey});break;case"fullscreen":"function"==typeof e.fullscreen&&i.isEnabled&&e.fullscreen();break;case"presenter":e.openPresenterView()}}})),e.parent.appendChild(t),e.on("activate",(({index:t})=>{n("page",(n=>n.textContent=`Page ${t+1} of ${e.slides.length}`))})),e.on("fragment",(({index:t,fragments:r,fragmentIndex:i})=>{n("prev",(e=>e.disabled=0===t&&0===i)),n("next",(n=>n.disabled=t===e.slides.length-1&&i===r.length-1))})),e.on("marp-active",(()=>t.removeAttribute("aria-hidden"))),e.on("marp-inactive",(()=>t.setAttribute("aria-hidden","true"))),i.isEnabled&&i.onchange((()=>n("fullscreen",(e=>e.classList.toggle("exit",i.isEnabled&&i.isFullscreen)))))}}function k(e){window.addEventListener("message",(t=>{if(t.origin!==window.origin)return;const[n,r]=t.data.split(":");if("navigate"===n){const[t,n]=r.split(",");let i=Number.parseInt(t,10),s=Number.parseInt(n,10)+1;s>=e.fragments[i].length&&(i+=1,s=0),e.slide(i,{fragment:s})}}))}function L(e){if(!(e=>e.syncKey&&"string"==typeof e.syncKey)(e))throw new Error("The current instance of Bespoke.js is invalid for Marp bespoke presenter plugin.");Object.defineProperties(e,{openPresenterView:{enumerable:!0,value:S},presenterUrl:{enumerable:!0,get:I}}),x.available&&document.addEventListener("keydown",(t=>{80!==t.which||t.altKey||t.ctrlKey||t.metaKey||(t.preventDefault(),e.openPresenterView())}))}function S(){const e=Math.max(Math.floor(.85*window.innerWidth),640),t=Math.max(Math.floor(.85*window.innerHeight),360);return window.open(this.presenterUrl,`bespoke-marp-presenter-${this.syncKey}`,`width=${e},height=${t},menubar=no,toolbar=no`)}function I(){const e=new URLSearchParams(location.search);return e.set("view","presenter"),e.set("sync",this.syncKey),v(e)}var M=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];let P=e=>String(e).replace(/[&<>"']/g,(e=>`&${O[e]};`)),O={"&":"amp","<":"lt",">":"gt",'"':"quot","'":"apos"},F="dangerouslySetInnerHTML",$={className:"class",htmlFor:"for"},q={};function K(e,t){let n=[],r="";t=t||{};for(let e=arguments.length;e-- >2;)n.push(arguments[e]);if("function"==typeof e)return t.children=n.reverse(),e(t);if(e){if(r+="<"+e,t)for(let e in t)!1!==t[e]&&null!=t[e]&&e!==F&&(r+=` ${$[e]?$[e]:P(e)}="${P(t[e])}"`);r+=">"}if(-1===M.indexOf(e)){if(t[F])r+=t[F].__html;else for(;n.length;){let e=n.pop();if(e)if(e.pop)for(let t=e.length;t--;)n.push(e[t]);else r+=!0===q[e]?e:P(e)}r+=e?`</${e}>`:""}return q[r]=!0,r}const T=({children:e})=>K(null,null,...e),A="bespoke-marp-presenter-container",N="bespoke-marp-presenter-next",C="bespoke-marp-presenter-next-container",j="bespoke-marp-presenter-note-container",D="bespoke-marp-presenter-info-container",R="bespoke-marp-presenter-info-page",X="bespoke-marp-presenter-info-page-text",B="bespoke-marp-presenter-info-page-prev",U="bespoke-marp-presenter-info-page-next",V="bespoke-marp-presenter-info-time",Y="bespoke-marp-presenter-info-timer";function z(e){const{title:t}=document;document.title="[Presenter view]"+(t?` - ${t}`:"");const n={},r=e=>(n[e]=n[e]||document.querySelector(`.${e}`),n[e]);document.body.appendChild((e=>{const t=document.createElement("div");return t.className=A,t.appendChild(e),t.insertAdjacentHTML("beforeend",K(T,null,K("div",{class:C},K("iframe",{class:N,src:"?view=next"})),K("div",{class:j}),K("div",{class:D},K("div",{class:R},K("button",{class:B,tabindex:"-1",title:"Previous"},"Previous"),K("span",{class:X}),K("button",{class:U,tabindex:"-1",title:"Next"},"Next")),K("time",{class:V,title:"Current time"}),K("div",{class:Y})))),t})(e.parent)),(e=>{r(C).addEventListener("click",(()=>e.next()));const t=r(N),n=(i=t,(e,t)=>{var n;return null===(n=i.contentWindow)||void 0===n?void 0:n.postMessage(`navigate:${e},${t}`,"null"===window.origin?"*":window.origin)});var i;t.addEventListener("load",(()=>{r(C).classList.add("active"),n(e.slide(),e.fragmentIndex),e.on("fragment",(({index:e,fragmentIndex:t})=>n(e,t)))}));const s=document.querySelectorAll(".bespoke-marp-note");s.forEach((e=>{e.addEventListener("keydown",(e=>e.stopPropagation())),r(j).appendChild(e)})),e.on("activate",(()=>s.forEach((t=>t.classList.toggle("active",t.dataset.index==e.slide()))))),e.on("activate",(({index:t})=>{r(X).textContent=`${t+1} / ${e.slides.length}`}));const a=r(B),o=r(U);a.addEventListener("click",(t=>{a.blur(),e.prev({fragment:!t.shiftKey})})),o.addEventListener("click",(t=>{o.blur(),e.next({fragment:!t.shiftKey})})),e.on("fragment",(({index:t,fragments:n,fragmentIndex:r})=>{a.disabled=0===t&&0===r,o.disabled=t===e.slides.length-1&&r===n.length-1}));const l=()=>r(V).textContent=(new Date).toLocaleTimeString();l(),setInterval(l,250)})(e)}function H(e){const t=b();return t===h&&e.appendChild(document.createElement("span")),{"":L,[m]:z,[h]:k}[t]}function J(e){e.on("activate",(t=>{document.querySelectorAll(".bespoke-progress-parent > .bespoke-progress-bar").forEach((n=>{n.style.flexBasis=100*t.index/(e.slides.length-1)+"%"}))}))}const W=e=>{const t=Number.parseInt(e,10);return Number.isNaN(t)?null:t};function _(e={}){const t=Object.assign({history:!0},e);return e=>{let n=!0;const r=e=>{const t=n;try{return n=!0,e()}finally{n=t}},i=(t={fragment:!0})=>{((t,n)=>{const{fragments:r,slides:i}=e,s=Math.max(0,Math.min(t,i.length-1)),a=Math.max(0,Math.min(n||0,r[s].length-1));s===e.slide()&&a===e.fragmentIndex||e.slide(s,{fragment:a})})((W(location.hash.slice(1))||1)-1,t.fragment?W(w("f")||""):null)};e.on("fragment",(({index:e,fragmentIndex:r})=>{n||y({f:0===r||r.toString()},{location:Object.assign(Object.assign({},location),{hash:`#${e+1}`}),setter:(...e)=>t.history?history.pushState(...e):history.replaceState(...e)})})),setTimeout((()=>{i(),window.addEventListener("hashchange",(()=>r((()=>{i({fragment:!1}),y({f:void 0})})))),window.addEventListener("popstate",(()=>{n||r((()=>i()))})),n=!1}),0)}}function G(e={}){var t;const n=e.key||(null===(t=window.history.state)||void 0===t?void 0:t.marpBespokeSyncKey)||Math.random().toString(36).slice(2),r=`bespoke-marp-sync-${n}`;var i;i={marpBespokeSyncKey:n},y({},{setter:(e,...t)=>f(Object.assign(Object.assign({},e),i),...t)});const s=()=>{const e=x.get(r);return e?JSON.parse(e):Object.create(null)},a=e=>{const t=s(),n=Object.assign(Object.assign({},t),e(t));return x.set(r,JSON.stringify(n)),n},o=()=>{window.removeEventListener("pageshow",o),a((e=>({reference:(e.reference||0)+1})))};return e=>{o(),Object.defineProperty(e,"syncKey",{value:n,enumerable:!0});let t=!0;setTimeout((()=>{e.on("fragment",(e=>{t&&a((()=>({index:e.index,fragmentIndex:e.fragmentIndex})))}))}),0),window.addEventListener("storage",(n=>{if(n.key===r&&n.oldValue&&n.newValue){const r=JSON.parse(n.oldValue),i=JSON.parse(n.newValue);if(r.index!==i.index||r.fragmentIndex!==i.fragmentIndex)try{t=!1,e.slide(i.index,{fragment:i.fragmentIndex})}finally{t=!0}}}));const i=()=>{const{reference:e}=s();void 0===e||e<=1?x.remove(r):a((()=>({reference:e-1})))};window.addEventListener("pagehide",(e=>{e.persisted&&window.addEventListener("pageshow",o),i()})),e.on("destroy",i)}}function Q({slope:e=Math.tan(-35*Math.PI/180),swipeThreshold:t=30}={}){return n=>{let r;const i=n.parent,s=e=>{const t=i.getBoundingClientRect();return{x:e.pageX-(t.left+t.right)/2,y:e.pageY-(t.top+t.bottom)/2}};i.addEventListener("touchstart",(e=>{r=1===e.touches.length?s(e.touches[0]):void 0}),{passive:!0}),i.addEventListener("touchmove",(e=>{if(r)if(1===e.touches.length){e.preventDefault();const t=s(e.touches[0]),n=t.x-r.x,i=t.y-r.y;r.delta=Math.sqrt(Math.pow(Math.abs(n),2)+Math.pow(Math.abs(i),2)),r.radian=Math.atan2(n,i)}else r=void 0})),i.addEventListener("touchend",(i=>{if(r){if(r.delta&&r.delta>=t&&r.radian){let t=r.radian-e;t=(t+Math.PI)%(2*Math.PI)-Math.PI,n[t<0?"next":"prev"](),i.stopPropagation()}r=void 0}}),{passive:!0})}}function Z(e,t,n,r){return new(n||(n=Promise))((function(i,s){function a(e){try{l(r.next(e))}catch(e){s(e)}}function o(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,o)}l((r=r.apply(e,t||[])).next())}))}let ee;const te=()=>(void 0===ee&&(ee="wakeLock"in navigator&&navigator.wakeLock),ee),ne=()=>Z(void 0,void 0,void 0,(function*(){const e=te();if(e)try{return yield e.request("screen")}catch(e){console.warn(e)}return null}));function re(){return Z(this,void 0,void 0,(function*(){if(!te())return;let e;const t=()=>{e&&"visible"===document.visibilityState&&ne()};return document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t),e=yield ne(),e}))}!function(r=document.getElementById("p")){document.body.setAttribute(p,(()=>{const e=w("view");return e===h||e===m?e:""})());const i=(e=>{const t=w(e);return y({[e]:void 0}),t})("sync")||void 0,o=!1,d=!0;e(r,((...e)=>{const t=g.findIndex((e=>b()===e));if(t<0)throw new Error("Invalid view");return e.map((([e,n])=>e[t]&&n)).filter((e=>e))})([[d,d,o],G({key:i})],[[d,d,d],H(r)],[[d,d,o],l],[[d,d,d],t],[[d,o,o],a()],[[d,d,d],c],[[d,d,d],_({history:!1})],[[d,d,o],u()],[[d,d,o],s],[[d,o,o],J],[[d,d,o],Q()],[[d,o,o],E()],[[d,d,d],n],[[d,d,o],re]))}()}();</script></body></html>